#pragma once
#include <QObject>
#include <QPointF>

class QGraphicsScene;
class BluePrintView;
class BaseNode;

/**
 * SceneController - 场景控制器（MVC中的Controller层）
 * 负责管理场景的创建、配置和生命周期
 * 协调View层和Model层之间的交互
 */
class SceneController : public QObject
{
    Q_OBJECT

public:
    explicit SceneController(QObject *parent = nullptr);
    ~SceneController();

    // 初始化场景并绑定到视图
    void initializeScene(BluePrintView *view);
    
    // 创建节点
    BaseNode* createNode(const QString& nodeType, const QPointF& position);
    
    // 获取场景指针
    QGraphicsScene* getScene() const { return m_scene; }

private:
    QGraphicsScene *m_scene;
    BluePrintView *m_view;
    
    void setupScene();
};